iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0

最近忙得有點沒法好好思考內容,不過對於內容品質還是會堅持的>< 可能讀者會發現變有點短哈哈哈哈XD今天介紹模擬環境的工具selenium~是當今很流行的工具,用途在於模擬人類使用瀏覽器,用途例如爬蟲跟單元測試,我們這次用途也是要用它模擬人類玩小恐龍哦~

前置作業

首先選擇在某路徑建立專案資料夾

mkdir dino_rl # 如果已載DinoRunTutorial的就不用此步
cd dino_rl # cd DinoRunTutorial
pip install seleiunm

chromedriver要去官網,推薦選穩定版本(Latest stable release),進到頁面後挑自己系統對照的chromedriver,接著再減壓縮,把檔案放進剛的專案資料夾,或指定的路徑,準備工作就差不多囉!
https://ithelp.ithome.com.tw/upload/images/20190926/20121110XiyArsaEWa.png

coding

開始coding!首先輸入python,然後載入套件:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys

參數設定:

chrome_driver_path = 'chromedriver' # 設定chromedriver路徑
init_script = "document.getElementsByClassName('runner-canvas')[0].id = 'runner-canvas'" # 元素設id
chrome_options = Options()
chrome_options.add_argument("--mute-audio") # 取消音效
driver = webdriver.Chrome(executable_path = chrome_driver_path,chrome_options=chrome_options) # 載入設定
driver.set_window_position(x=-10,y=0) # 設置視窗大小

開啟網頁後設定:

driver.get('chrome://dino') # 進入網頁
driver.execute_script("Runner.config.ACCELERATION=0") # 禁止加速度
driver.execute_script(init_script) # 執行javascript語法

手動解除訊息欄

這邊大家可以在打開網頁時看到上面的訊息
https://ithelp.ithome.com.tw/upload/images/20191020/20121110dFU2inQrrN.png
以前這個訊息是可以在driver輸入指令關掉的

chrome_options.add_argument("disable-infobars")

但可能是因為擔心有人用來做不法用途,例如你做了什麼動作,導致開啟chrome網頁,但卻不知該網頁是由python去操作的,所以看網路上的論壇目前這個是沒有解法的,你需要手動去關掉它,所以未來在網頁初始化的部分,會寫段

time.sleep(5)

使用者要做兩個動作,(1)按x關掉訊息欄 (2)F5 重整網頁
我知道這個過程很拙XD 但沒辦法目前因為安全考量無其他解法,除非google想出替代方案,不然在這之前使用者在訓練或測試時都需要先手動做一次這樣的流程囉!

程式碼實作

selenium實作unit2_test_selenium

結語

用selenium其實對訓練來說有點慢XD因為它是需要開啟瀏覽器的搜集畫面做數據,而不是多線程在底下,一次開很多個環境蒐數據。不過主軸是要介紹環境跟算法的整合,不影響我們教學~好哩今天就先這樣哩~明天會介紹怎建構環境的類別,讓小恐龍很好的做模組化~


上一篇
Day10 初探小恐龍
下一篇
Day12 Agent類別實作
系列文
人工智慧(RL系列) 完爆遊戲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言